package com.yami.shop.bean.model;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 人脸设计稿订单表实体类
 * @author AI Assistant
 */
@Data
@TableName("tz_face_design_order")
public class FaceDesignOrder implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 订单ID
     */
    @TableId
    private Long orderId;

    /**
     * 订单编号
     */
    private String orderNumber;

    /**
     * 用户ID
     */
    private String userId;

    /**
     * 设计稿ID
     */
    private Long designId;

    /**
     * 草稿ID
     */
    private Long draftId;

    /**
     * 订单金额
     */
    private BigDecimal orderAmount;

    /**
     * 实际支付金额
     */
    private BigDecimal actualAmount;

    /**
     * 订单状态

     * 3:待支付（管理后台确认排单）
     * 4:已支付
     * 5:待发货
     * 6:已发货
     * 7:已完成（用户确认收货）
     * 8:已取消
     * 9:退款中
     * 10:已退款
     */
    private Integer orderStatus;

    /**
     * 支付状态
     * 0:未支付
     * 1:已支付
     * 2:退款中
     * 3:已退款
     */
    private Integer payStatus;

    /**
     * 支付方式
     * 1:微信支付
     * 2:支付宝
     * 3:余额支付
     */
    private Integer payType;

    /**
     * 支付时间
     */
    private Date payTime;

    /**
     * 支付流水号
     */
    private String payNo;

    /**
     * 运单号
     */
    private String trackingNumber;

    /**
     * 快递公司编码
     */
    private String expressCompany;

    /**
     * 发货时间
     */
    private Date shipTime;

    /**
     * 收货时间
     */
    private Date receiveTime;

    /**
     * 取消时间
     */
    private Date cancelTime;

    /**
     * 取消原因
     */
    private String cancelReason;

    /**
     * 退款时间
     */
    private Date refundTime;

    /**
     * 退款原因
     */
    private String refundReason;

    /**
     * 订单备注
     */
    private String orderRemark;

    /**
     * 收货人姓名
     */
    private String receiverName;

    /**
     * 收货人电话
     */
    private String receiverPhone;

    /**
     * 收货地址
     */
    private String receiverAddress;

    /**
     * 快递状态
     * 0: 未发货, 1: 已发货, 2: 运输中, 3: 已签收
     */
    private Integer expressStatus;

    /**
     * 删除状态
     * 0: 未删除, 1: 已删除
     */
    private Integer deleteStatus;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 关联的设计稿信息
     */
    @TableField(exist = false)
    private FaceDesign faceDesign;

    /**
     * 关联的草稿信息
     */
    @TableField(exist = false)
    private FaceDraft faceDraft;

    /**
     * 关联的用户信息
     */
    @TableField(exist = false)
    private User user;
}
